/*
 * @Description: 
 * @Version: 1.0
 * @Autor: ziwei
 * @Date: 2021-04-06 09:21:46
 * @LastEditors: ziwei
 * @LastEditTime: 2021-04-25 11:16:50
 */
//1.核心模块，内置模块 node中自带的
//2.文件模块 引用都是相对路径
  //（会判断路径是不是核心模块 是核心就不做这件事了）看一下是不是第三方 如果不是在继续。文件的查找规范：最新：默认是先查找同名文件，如果没有尝试添加查找.js和.json文件，如果再没有就查找同名文件夹（当成了一个包），先查找package.json，如果没有就找index.js,如果还没有就报错 老版本：先查找包(有paakage.json)如果没有package.json会查找文件（废弃了）

// 3.第三方模块(安装包都得有描述信息 否则无法上传)（引用也是没有相对路径 1：全局模块 2：代码种的第三方模块） 
//默认会沿着当前目录向上查找，查找node_module下的同名文件夹，根据（package.json种的main）->index.js种查找，如果没有找到向上查找 查找上级的node_modlue ，如果到跟路径还没有找到就报错了
let r = require('co');
console.log(module.paths);//查找路径

//为什么电脑可以直接使用npm 
//因为当前电脑会去查找环境变量(cmd path可以输出全部的)
//npm ->node package manager(不要使用cnpm 安装模块时 无法锁定版本 会出现很多问题；npm慢可以改源或者yarn)
//3n 模块 npm nrm(node源管理工具:nrm node registry manager) nvm(nvm node version manager) nvm-win 
//nrm use taobao
//nrm use npm 
//nrn use cnpm

//npm默认在电脑环境变量里 所以可以直接使用，安装的全局模块都在npm下生成了快捷方式，但是只能在命令行里用
const r1 = require('mine');
console.log(r1);

//全局安装之能在命令行里用：自己实现全局包 1：需要配置Bin命令 2：添加执行当时#! /usr/bin/env 3:将此包放到npm下（可以全局安装）临时做一个npm link(为了调试方便)


//npm 5.2之后会把共同的模块拍平
//如果直接用npm run script的方式 默认在执行命令前，会将环境变量
//工具类的使用全局包

//2）本地安装，在代码中使用
//依赖关系（开发依赖-webpack glup 生产依赖 vue ）同等依赖 打包依赖 可选依赖
//npm install 模块 --save --save-dev
//npm 5.3之后会把共同的模块拍平

//版本号 管理的方式 课件上有
//^2.2.4 = 第一位只能是2
//~2.2.4  第二位不能低于2 不能超过2版本 
// <= >=
//npm version major 升级版本号 2.0.0
//npm version patch（小版本）2.0.1
//npm version minor（小版本）2.1.0
//配合git tag使用 beta(公开测试版) rc()最终测试版本
//2.1.0-beta.1 这样声明版本 用户不会立马使用 可以用来测试 
//npm publish --tag beta

//测试 如果更改了 package.json 会同步给 ->lock文件

//发包 npm publish(要切换到官方源nrm use npm)
//作用域包@vue....
//npm addUser username ....
//包的发布 1需要看包的名字是重名
//2切换到本地npm源
//3 登陆账号 发布
//npm unpublish

//yarn mongorepo管理的只能用yarn

//模板引擎的实现
// events模块的实现 发布订阅
//任务：回去试一试发包